<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>宏任务和微任务</title>
</head>

<body>
    <!-- 
        JS中用来存储待执行回调函数的队列中包含了两个待定的队列
        宏队列：用来保存执行的宏任务（回调） 比如：定时器 Dom事件操作 ajax
        微任务：用来保存执行的微任务（回调） 比如： Promise中的回调
        JS执行的时候会区分两个队列
            首先JS引擎会先将所有的同步代码都执行完
            每次准备取出第一个宏任务的执行之前 都要将所有的微任务一个个取出来执行
            顺序为 同-微-宏
     -->
    <script>
        // 2-4-3-1
        // 同： 2222 4444
        // 微： 3333
        // 宏： 1111
        setTimeout(() => {
            console.log(1111)
        })
        new Promise((resolve, reject) => {
            // reject();
            resolve()
            console.log(2222)
        }).then(value => {
            console.log(3333)
        })
        console.log(4444)
    </script>
</body>

</html>